/*如果当前的状态为必胜态(也就是1组异或2组异或3组的结果不为0时)
则可以将改变组的数值(也就是移动和尚),使得让对方获得必败状态
假设对方要移动组的前一个数时,我们总是可以将同组的后边一个数移动相同的步数,来维持胜利
*/
#include <bits/stdc++.h>
using namespace std;
int a[100 + 5];     // 存放每个小僧的位置
int b[100 + 5];     // 存放每两个小僧之间的间隔
int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int n = 0, t;
    while(cin >> t) a[n++] = t;
    for(int i = 0; i < n - 1; ++i)
        b[i] = a[i + 1] - a[i] - 1;
    //判断当前是否为奇异局势
    int sum = 0;
    for(int i = 0; i < n - 1; i+=2)
        sum ^= b[i];
    // 奇异局势, 必输
    
    /*
    cout << n << endl;
    for(int i = 0; i < n - 1; ++i)
        cout << b[i] << " ";
    cout << endl;
    */
    if(sum == 0) cout << "-1";

    // 非奇异局势, 判断最开始移动那个会赢
    else
    {
        for(int i = 0; i < n - 1; ++i)
        {
            // 只移动前一个
            for(int j = 0; j <= b[i]; ++j)
            {
                // 当前范围减少j
                b[i] -= j;
                if(i != 0) b[i - 1] += j;

                // 判断是否会产生非奇异局势
                int sum = 0;
                for(int k = 0; k < n - 1; k+=2)
                    sum ^= b[k];
                if(sum == 0)
                {
                    cout << a[i] << " " << (a[i] + j) << endl; 
                    return 0;
                }
                b[i] += j;
                if(i != 0) b[i - 1] -=j;
            }
        }
    }
    return 0;
}
 